本文同步於 Medium
這次要做一個簡單的 Todo App,擁有以下的功能:
現在沒有規劃需要打 API 的情境,如果後續有時間再追加使用 API 的 spec。
討論完目標後,再來說說這個專案的架構
Android Architecture 參考了 Clean Architecture ,基本上可以把架構大致分成三層:
Presentation 層不會直接與 Data 層接觸,ViewModel 透過數量不等的 UseCase 訪問 Repository ,所有的 UseCase 皆是在 background thread 執行,保證 UI thread 不會進行 IO 操作。
ViewModels 透過 LiveData 傳遞資料給 Views ,具體的實現透過 DataBinding ,避免頻煩實作一樣的程式碼。
將功能拆開後交由 UseCases 實現,並透過 Result(sealed class)
將結果傳出,依情況可能在後期嘗試使用 LiveData 傳遞 UseCase 的結果
可以粗略分成 Local Data & Remote Data ,本地 DB 使用 Room ,負責資料的增刪查改等;由於這個 App 比較簡單,目前先不會實現 Remote Data ,另外在設計時會特別注意 離線使用 的情境。
除了前面提到的幾項工具外,在這次挑戰裡還有使用到一些比較重要的 Library:
架構大致介紹到這裡,明天再來討論本次核心之一: Kotlin Coroutines。
android text:Android 官方的 testing library ,包含了 Google Truth、Espresso、Robolectric 等
確定是android text嗎?我只是好奇這有沒有拼錯字